package com.eastedu.report.principal.converter;

import com.eastedu.report.common.model.po.TeacherTeachingActivityResourceJoinDetailPO;
import com.eastedu.report.common.model.po.TeacherTeachingActivityResourceJoinPO;
import com.eastedu.report.common.model.po.TeacherTeachingActivityResourceUsagePeriodSubjectPO;
import com.eastedu.report.principal.model.teacher.exam.TeacherExamUsageReportData;
import com.eastedu.report.principal.model.teacher.prepare.TeacherPrepareReceiveReportData;
import com.eastedu.report.principal.model.teacher.prepare.TeacherPrepareUsageReportData;
import com.eastedu.report.principal.model.teacher.research.TeacherResearchJoinResourceDetailReportData;
import com.eastedu.report.principal.model.teacher.research.TeacherResearchUsageReportData;
import com.eastedu.report.principal.model.teacher.research.TeacherTeachingActivityResourceJoinReportData;
import com.eastedu.report.principal.model.teacher.student.TeacherStudentJoinResourceDetailReportData;
import com.eastedu.report.principal.model.teacher.student.TeacherStudentUsageReportData;
import com.eastedu.report.principal.model.teacher.teaching.TeacherTeachingReportData;
import org.mapstruct.Mapper;

import java.util.List;

/**
 * The interface Principal teaching activity converter.
 *
 * @author superman
 */
@Mapper(componentModel = "spring")
public interface PrincipalTeachingActivityConverter {

    /**
     * Convert to teacher exam report data teacher exam report data.
     *
     * @param po the po
     * @return the teacher exam report data
     */
    TeacherExamUsageReportData convertToTeacherExamReportData(TeacherTeachingActivityResourceUsagePeriodSubjectPO po);

    /**
     * Convert to teacher teaching report data teacher teaching report data.
     *
     * @param po the po
     * @return the teacher teaching report data
     */
    TeacherTeachingReportData convertToTeacherTeachingReportData(TeacherTeachingActivityResourceUsagePeriodSubjectPO po);

    /**
     * Convert to teacher resource join detail report data teacher research join resource detail report data.
     *
     * @param po the po
     * @return the teacher research join resource detail report data
     */
    TeacherResearchJoinResourceDetailReportData convertToTeacherResourceJoinDetailReportData(TeacherTeachingActivityResourceJoinDetailPO po);

    /**
     * Convert to teacher exam report data list.
     *
     * @param pos the pos
     * @return the list
     */
    List<TeacherExamUsageReportData> convertToTeacherExamReportData(List<TeacherTeachingActivityResourceUsagePeriodSubjectPO> pos);


    /**
     * Convert to teacher teaching report data list.
     *
     * @param pos the pos
     * @return the list
     */
    List<TeacherTeachingReportData> convertToTeacherTeachingReportData(List<TeacherTeachingActivityResourceUsagePeriodSubjectPO> pos);

    /**
     * Convert to teacher resource join detail report data list.
     *
     * @param pos the pos
     * @return the list
     */
    List<TeacherResearchJoinResourceDetailReportData> convertToTeacherResourceJoinDetailReportData(List<TeacherTeachingActivityResourceJoinDetailPO> pos);

    /**
     * Convert to teacher resource join report data teacher research join report data.
     *
     * @param po the po
     * @return the teacher research join report data
     */
    TeacherTeachingActivityResourceJoinReportData convertToTeacherResourceJoinReportData(TeacherTeachingActivityResourceJoinPO po);

    /**
     * Convert to teacher resource usage report data teacher research usage report data.
     *
     * @param po the po
     * @return the teacher research usage report data
     */
    TeacherResearchUsageReportData convertToTeacherResourceUsageReportData(TeacherTeachingActivityResourceUsagePeriodSubjectPO po);

    /**
     * Convert to teacher resource usage report data list.
     *
     * @param pos the pos
     * @return the list
     */
    List<TeacherResearchUsageReportData> convertToTeacherResourceUsageReportData(List<TeacherTeachingActivityResourceUsagePeriodSubjectPO> pos);

    /**
     * Convert to teacher resource usage report data list.
     *
     * @param po the po
     * @return teacher student usage report data
     */
    TeacherStudentUsageReportData convertToTeacherStudentTeacherResourceUsageReportData(TeacherTeachingActivityResourceUsagePeriodSubjectPO po);

    /**
     * Convert to teacher resource usage report data list.
     *
     * @param pos the pos
     * @return list list
     */
    List<TeacherStudentUsageReportData> convertToTeacherStudentTeacherResourceUsageReportData(List<TeacherTeachingActivityResourceUsagePeriodSubjectPO> pos);

    /**
     * Convert to teacher resource usage report data list.
     *
     * @param pos the pos
     * @return list list
     */
    List<TeacherStudentJoinResourceDetailReportData> convertToTeacherStudentTeacherResourceJoinReportData(List<TeacherTeachingActivityResourceJoinDetailPO> pos);

    /**
     * Convert to teacher prepare usage report data teacher prepare usage report data.
     *
     * @param po the po
     * @return the teacher prepare usage report data
     */
    TeacherPrepareUsageReportData convertToTeacherPrepareUsageReportData(TeacherTeachingActivityResourceUsagePeriodSubjectPO po);

    /**
     * Convert to teacher prepare usage report data list.
     *
     * @param pos the pos
     * @return the list
     */
    List<TeacherPrepareUsageReportData> convertToTeacherPrepareUsageReportData(List<TeacherTeachingActivityResourceUsagePeriodSubjectPO> pos);


    /**
     * Convert to teacher prepare receive report data teacher prepare receive report data.
     *
     * @param po the po
     * @return the teacher prepare receive report data
     */
    TeacherPrepareReceiveReportData convertToTeacherPrepareReceiveReportData(TeacherTeachingActivityResourceUsagePeriodSubjectPO po);

    /**
     * Convert to teacher prepare receive report data list.
     *
     * @param pos the pos
     * @return the list
     */
    List<TeacherPrepareReceiveReportData> convertToTeacherPrepareReceiveReportData(List<TeacherTeachingActivityResourceUsagePeriodSubjectPO> pos);
}
